Memory devices can include internal, semiconductor, integrated circuits in computers or other electronic devices. There are many different types of memory including random-access memory (RAM), read only memory (ROM), dynamic random access memory (DRAM), static RAM (SRAM), synchronous dynamic RAM (SDRAM), and non-volatile memory (e.g., flash memory).
Flash memory devices have developed into a popular source of non-volatile memory for a wide range of electronic applications. Flash memory devices typically use a one-transistor memory cell that allows for high memory densities, high reliability, and low power consumption. Common uses for flash memory include personal computers, personal digital assistants (PDAs), digital cameras, and cellular telephones. Program code and system data such as a basic input/output system (BIOS) are typically stored in flash memory devices for use in personal computer systems.
Flash memory devices can also be incorporated into solid state storage devices such as solid state drives. A solid state drive is comprised of multiple flash packages where each package can be comprised of many memory dies. Solid state drives are used in computers to replace the hard disk drives that typically have used magnetic or optical disks for storing large amounts of data. A solid state drive does not use moving parts whereas a hard disk drive requires a complex and sensitive drive and read/write head assembly to interact with the magnetic/optical disk. Thus, the solid state drives are more resistant to damage and loss of data through vibration and impacts.
One drawback to current solid state drive technology is that, due to the large number of memory dies in each drive, the chances of having a defective memory die during manufacture of the drive are greatly increased. Thus the drive would either have to be thrown out, a very expensive option, or the solid state drive controller would have to compensate for the defective die by mapping it out during access of the memory dies by the system.
A Flash Translation Layer (FTL) works in conjunction with an operating system to make flash memory appear to the operating system as a disk drive. This is accomplished by the FTL creating virtual small blocks of data, also known as sectors, out of flash erase blocks. The FTL also manages and maps data on the solid state drive so that it appears to the system to be written in a certain location when in fact it is being stored, for wear leveling purposes, in different locations of the flash memory.
The FTL performs these tasks by generating and maintaining large tables in memory to map host requests to one sector of a disk drive to the actual location of data in the flash memory dies of the solid state drive. These tables can be so large that the system RAM cannot hold them and the flash memory has to be used as overflow memory to hold portions of the tables. The large tables not only waste RAM that can be used for other tasks but system performance suffers when the FTL has to access flash memory to retrieve table data since the flash memory is slower than RAM at reading and writing.
For the reasons stated above, and for other reasons stated below that will become apparent to those skilled in the art upon reading and understanding the present specification, there is a need in the art for a more efficient Flash Translation Layer.